package io;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 *    缓冲输出流写出数据的时效性问题(缓冲区问题)
 */
public class BOSDemo {
    public static void main(String[] args) throws IOException {
        FileOutputStream fos = new FileOutputStream("bos.txt");
        BufferedOutputStream bos = new BufferedOutputStream(fos);

        String line = "克瑞斯么司";
        byte[] data = line.getBytes("UTF-8");
        bos.write(data);

        /*
             void flush()
             将缓冲流的缓冲区中已缓存的数据一次性写出.
             注:频繁调用该方法会提高写出次数降低写出效率.但可以换来写出数据的及时性.

             flush方法是被定义在了输出流的超类上,这意味着所有的输出流都有flush方法,
             目的是在流连接中传递flush操作给缓冲输出流.
             其他高级流的flush中只是调用了他链接的流的flush.
         */

        bos.flush();
        System.out.println("ok");

        /*
           缓冲流的close操纵中会自动调用一次flush,确保所有缓存的数据会被写出
         */

        bos.close();
    }
}
